//package com.kucai.app.util.websocket;
//
//import android.os.Handler;
//
//import com.google.gson.Gson;
//import com.kucai.app.global.Info;
//
//import java.util.HashMap;
//import java.util.Map;
//import java.util.concurrent.TimeUnit;
//
//import okhttp3.OkHttpClient;
//import okhttp3.Request;
//import okhttp3.Response;
//import okhttp3.WebSocket;
//import okhttp3.WebSocketListener;
//import okio.ByteString;
//
///**
// * Created by admin on 2018/12/24.
// * 用单例模式 全局只有一个socket实例子
// */
//
//public class WebSocketUtils {
//    private long sendTime = 0L;
//    private Handler mHandler = new Handler();
//    private static final long HEART_BEAT_RATE = 2 * 1000;
//    private WebSocket mSocket;
//    private MsgHandle mmsghanlde;
//    private Runnable heartBeatRunnable = new Runnable() {
//        @Override
//        public void run() {
//            if (System.currentTimeMillis() - sendTime >= HEART_BEAT_RATE) {
//                String message = sendData();
//                mSocket.send(message);
//                sendTime = System.currentTimeMillis();
//            }
//            mHandler.postDelayed(this, HEART_BEAT_RATE); //每隔一定的时间，对长连接进行一次心跳检测
//        }
//    };
//
//    public interface MsgHandle {
//        void open();
//
//        void getMsg(String msg);
//
//        void onClosed();
//
//        void onFailure(String Throwable);
//    }
//
//    public void setListener(String url, MsgHandle handle) {
//        this.mmsghanlde = handle;
//        OkHttpClient mOkHttpClient = new OkHttpClient.Builder()
//                .readTimeout(3, TimeUnit.SECONDS)//设置读取超时时间
//                .writeTimeout(3, TimeUnit.SECONDS)//设置写的超时时间
//                .connectTimeout(3, TimeUnit.SECONDS)//设置连接超时时间
//                .build();
//        Request request = new Request.Builder().url(url).build();
//        EchoWebSocketListener socketListener = new EchoWebSocketListener();
//        // 刚进入界面，就开启心跳检测
////        mHandler.postDelayed(heartBeatRunnable, HEART_BEAT_RATE);
//        mOkHttpClient.newWebSocket(request, socketListener);
//        mOkHttpClient.dispatcher().executorService().shutdown();
//    }
//
//
//    private final class EchoWebSocketListener extends WebSocketListener {
//        @Override
//        public void onOpen(WebSocket webSocket, Response response) {
//            super.onOpen(webSocket, response);
//            mSocket = webSocket;
//            mmsghanlde.open();
//        }
//
//        @Override
//        public void onMessage(WebSocket webSocket, ByteString bytes) {
//            super.onMessage(webSocket, bytes);
//        }
//
//        @Override
//        public void onMessage(WebSocket webSocket, String text) {
//            super.onMessage(webSocket, text);
//            mmsghanlde.getMsg(text);
//            //手动关闭连接
////            if (!TextUtils.isEmpty(text)) {
////                if (mSocket != null) {
////                    mSocket.close(1000, null);
////                }
////                if (mHandler != null) {
////                    mHandler.removeCallbacksAndMessages(null);
////                    mHandler = null;
////                }
////            }
//        }
//
//        @Override
//        public void onClosed(WebSocket webSocket, int code, String reason) {
//            super.onClosed(webSocket, code, reason);
//            mmsghanlde.onClosed();
//        }
//
//        @Override
//        public void onClosing(WebSocket webSocket, int code, String reason) {
//            super.onClosing(webSocket, code, reason);
//        }
//
//        @Override
//        public void onFailure(WebSocket webSocket, Throwable t, Response response) {
//            super.onFailure(webSocket, t, response);
//            mmsghanlde.onFailure(t.toString());
//            if (mSocket != null) {
//                mSocket.close(1000, "");
//            }
//        }
//    }
//
//    private String sendData() {
//        String jsonHead = "";
//        Map<String, Object> mapHead = new HashMap<>();
//        mapHead.put("qrCode", "123456");
//        jsonHead = buildRequestParams(mapHead);
//        return jsonHead;
//    }
//
//
//    public static String buildRequestParams(Object params) {
//        Gson gson = new Gson();
//        String jsonStr = gson.toJson(params);
//        return jsonStr;
//    }
//
//    public void sendMsg(String text) {
//        mSocket.send(text);
//    }
//
//    public void ondestoryWebsocket() {
//        if (mSocket != null) {
//            mSocket.close(1000, "");
//            mSocket = null;
//        }
//    }
//}
